package com.yy.yunpan.common.result;

/**
 * 响应状态码枚举
 *
 * @author YY
 * @since 2025-10-01
 */
public enum ResultCode {

    /**
     * 成功
     */
    SUCCESS(200, "操作成功"),

    /**
     * 失败
     */
    ERROR(500, "操作失败"),

    /**
     * 参数错误
     */
    PARAM_ERROR(400, "请求参数错误"),

    /**
     * 未授权
     */
    UNAUTHORIZED(401, "未授权"),

    /**
     * 权限不足
     */
    FORBIDDEN(403, "权限不足"),

    /**
     * 资源不存在
     */
    NOT_FOUND(404, "资源不存在"),

    /**
     * 用户相关错误码
     */
    USER_NOT_EXIST(1001, "用户不存在"),
    USER_ALREADY_EXIST(1002, "用户已存在"),
    PASSWORD_ERROR(1003, "密码错误"),
    EMAIL_NOT_VERIFIED(1004, "邮箱未验证"),
    VERIFY_CODE_ERROR(1005, "验证码错误"),
    VERIFY_CODE_EXPIRED(1006, "验证码已过期"),

    /**
     * 文件相关错误码
     */
    FILE_NOT_EXIST(2001, "文件不存在"),
    FILE_ALREADY_EXIST(2002, "文件已存在"),
    FILE_SIZE_EXCEED(2003, "文件大小超出限制"),
    STORAGE_QUOTA_EXCEED(2004, "存储空间不足"),
    FILE_TYPE_NOT_SUPPORT(2005, "文件类型不支持"),
    UPLOAD_FAILED(2006, "文件上传失败"),

    /**
     * 分享相关错误码
     */
    SHARE_NOT_EXIST(3001, "分享不存在"),
    SHARE_EXPIRED(3002, "分享已过期"),
    SHARE_PASSWORD_ERROR(3003, "分享密码错误"),
    SHARE_PERMISSION_DENIED(3004, "分享权限不足");

    private final Integer code;
    private final String message;

    ResultCode(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public Integer getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
}